package mysql.v1;

import java.sql.*;

/**
 * 使用JDBC规范  查询操作
 * 1.加载驱动：注册Mysql驱动
 * 2.准备SQL：链接成功Mysql服务器
 * 3.发送SQL：执行查询操作
 * 4.查询结果集：ResultSet 接口
 * 5.处理结果集：显示查询数据
 * 6.关闭资源
 * */
public class MysqlJDBCv1 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        // 1. 注册Mysql驱动--java--Driver接口
        Class.forName("com.mysql.jdbc.Driver");

        // 2.准备SQL，同时准备发送sql工具类--Java--DriverManager接口
        String username="root";
        String password="";
        String url="jdbc:mysql://127.0.0.1:3306/mi?characterEncoding=UTF-8";
        // 连接成功Mysql sql工具类--Java--DriverManager接口
        // DriverManager接口-->getConnection方法：传入3个参数
        // getConnection方法连接成功--返回对象Connection对象
        // 顺利打印Connection对象：代表JDBC连接Mysql成功
        Connection con= DriverManager.getConnection(url,username,password);
        // 测试是否连接成功 -- 成功
        System.out.println("测试Java连接数据库对象: "+con);

        // 3.发送SQL：查询mi库-->book表数据
        String sql="select * from book";
        // 通过连接成功Connection对象.createStatement();
        //createStatement()连接数据库，返回Statement对象
        //Statement()对象--Java--连接数据库并且返回Statement对象
        // Statement对象：执行静态mysql--具备CRUD功能：查增改删
        Statement st= con.createStatement();

        // 4.executeUpdate()   增删改  操作   使用方法  返回int类型
        //                                          成功几条sql
        //    executeQuery()   查询   操作   使用方法  返回ResultSet接口
        //                                          查询结果集
        ResultSet rs=st.executeQuery(sql);
        // ResultSet对象--Java--查询到的数据保存对象

        //5. 处理结果集，显示book表所有记录数【数据】
        System.out.println("------------------查询book表结果如下---------------------");
        // 显示数据--book表哪些字段，类型必须知道
        // 取【显示】7个字段，类型 mysql int[整型] varchar[字符串]
        // 取【显示】7个字段类型 java int[整型] String[字符串]
        // ResultSet对象提供方法 next() 依次取出每个字段记录【数据】
        // 前提：不知道多少字段：依次数据--while
        while(rs.next()){  // 取出每个【7个】字段记录【数据】
            // getInt("字段名") 取字段名下类型
            int id=rs.getInt("id");
            // getString("字段名"); 取字段名下类型
            String author=rs.getString("author");
            String name=rs.getString("name");
            int price=rs.getInt("price");
            String date=rs.getString("date");
            int number=rs.getInt("number");
            String discount=rs.getString("discount");
            // 打桩：打印作者记录
            System.out.println("作者： "+author+"打折情况"+discount);
        }

    }
}
